Recherches encadrées
La description suivante comprend des détails généraux sur les entrées de registre Range Indexing. Voir aussi Entrée de Registre Range Buckets.
Des outils permettant aux Administrateurs système de régler l'indexation des plages utilisée par EMu ont été ajoutés dans EMu 4.0.01. Un support pour l'optimisation automatique de l'indexation de plages de valeurs a aussi été ajouté. Ensemble, ces outils EMu peuvent fournir des index de plage optimaux avec des recherches sur les plages bien plus rapides.
L'indexation de plages de valeurs employée par le serveur de base de données EMu est conçu pour fonctionner avec le schéma de codage à deux niveaux superposés pour des recherches à correspondances partielles (Two level superimposed coding scheme for partial match retrieval), utilisée pour toutes les recherches. Comme il s'agit d'une extension de la méthode standard d'indexation EMu requiert seulement encore un jeu de fichier d'index, supprimant le besoin de base de requêtes jointes coûteuses.
L'indexation des plages constitue une série de « mini » indexations par champ. Contrairement au schéma à deux niveaux, où tous les termes de recherche sont placés dans l'index unique, les termes de la plage sont placés dans des index par champ qui sont ensuite concaténés pour former un index de plage. Chaque index de champ est constitué d'un certain nombre de range buckets. Ces buckets sont utilisés pour indiquer si une valeur donnée se trouve dans le bucket ou non.
Il y a deux considérations interdépendantes lors de l'établissement des sceaux de plages de valeurs :
- Distribution des données : autant que possible les données devraient être distribuées de façon égale entre les sceaux.
- Plage de requêtes logiques. Le but est de minimiser le besoin de vérification d'un sceau pour y trouver une valeur car contrôler si les enregistrements dans un sceau correspondent à la requête prend du temps, donc les utilisateurs chercheront plus probablement des plages particulières (des décades par exemples : de 1/1/1910 a 1/1/1920) et il sera pertinent de configurer les sceaux de plages de valeurs de façon appropriée.
Un exemple permet de rendre les choses plus claires. Regardez Largeur : (Détails de la mesure) dans le module Catalogue. Partons du principe que la largeur des photos est généralement comprise entre 10 et 50 cm. Nous établissons donc les range buckets suivants :
Note :
- –infini et +infini captureront toutes les valeurs en dehors des plages spécifiées.
Lorsqu'une recherche par plage est effectuée, ces buckets sont utilisés pour déterminer les correspondances possibles. Considérez les recherches de photos suivantes, d'une largeur comprise entre :
- 15 cm et 35 cm :
Dans ce cas :
- Trois buckets peuvent être ignorés sans risque.
- Un bucket n'a pas besoin d'être vérifié et est définitivement inclus dans la recherche.
- Deux buckets doivent être vérifiés pour une correspondance.
- 15 cm à 30 cm :
Dans ce cas :
- Quatre buckets peuvent être ignorés sans risque.
- Un bucket n'a pas besoin d'être vérifié et est définitivement inclus dans la recherche.
- Un bucket doit être vérifié.
- 10 cm à 35 cm :
Dans ce cas :
- Trois buckets peuvent être ignorés sans risque.
- Deux buckets n'ont pas besoin d'être vérifiés et sont définitivement inclus dans la recherche.
- Un bucket doit être vérifié.
- 10 cm à 30 cm :
Dans ce cas :
- Quatre buckets peuvent être ignorés sans risque.
- Deux buckets n'ont pas besoin d'être vérifiés et sont inclus dans la recherche.
- Aucun bucket ne doit être vérifié.
Dans ce cas, aucun bucket n’a besoin d’être vérifié !
Il devrait être clair avec les derniers exemples qu'établir des sceaux de plages de valeurs qui correspondent aux recherches des utilisateurs les plus probables a une influence directe sur la vitesse des requêtes basées sur des plages.
Le problème posé par le paramétrage des range buckets est que les valeurs des buckets dépendent de deux variables. La première est la gamme des valeurs saisies dans un champ, en d'autres termes la distribution des données. Si le champ Largeur contient une large gamme de valeurs, il est logique d'avoir une large gamme de buckets. Si cependant les données sont centrées autour d'un point, il serait avisé d'avoir une série de sceaux de plages de valeurs couvrant cette période.
La deuxième variable est la gamme de requêtes utilisée pour récupérer les données. Le problème de cette variable est que, pour un champ donné, il peut être très difficile de déterminer le type de plages de requêtes qui seront utilisées sans effectuer une analyse approfondie.
Comme ces deux variables ne peuvent pas être connues avant le chargement des données, EMu fournit un ensemble de range buckets par défaut pour chaque champ interrogeable. En général, ces buckets suffisent pour un petit nombre d'enregistrements, mais une réduction significative des temps de recherche peut être obtenue en « configurant » les range buckets pour un grand nombre d'enregistrements.
Régler l'indexation de plages de valeurs implique de considérer les deux données, distribution de données et étendue de la requête, et pour chaque variable de déterminer le jeu de sceaux de plages de valeurs qui fournit une performance optimale. L'objectif lors d'un réglage fin de l'indexation des plages de valeurs est de :
- Minimiser le nombre de sceaux qui ont besoin d'être consultés.
- Minimiser le nombre d'enregistrements qui ont besoin d'être consultés. Notez que cet objectif aura la priorité sur la distribution égale par défaut des enregistrements entre les buckets.
EMu offre un mécanisme permettant aux Administrateurs système d'ajuster automatiquement les range buckets en fonction de la distribution des données dans un champ. Cette fonctionnalité ne prend pas en compte les étendues de recherche puisque cette information requiert une interprétation subjective pour discerner les requêtes importantes qui doivent être optimisées de celles qui peuvent fonctionner un peu plus lentement.
La nouvelle fonctionnalité fournit cependant des informations sur la distribution des données qui peuvent être utilisées par un Administrateurs système pour établir manuellement les sceaux de plages de valeurs afin d'atteindre une performance optimale lorsque les étendues de recherche sont connues et peuvent être mesurées.
Donc, la nouvelle fonctionnalité fournit des sceaux de plages de valeurs automatisés, mais permet aux Administrateurs Système d'outrepasser ces paramétrages et de configurer leur propre sceau manuellement.